<?php
  /**
   * @author EVANDRO DE OLIVEIRA.
   * @category LIBRARY.
   * @since 09/11/2009.
   * @copyright 2009.
   * @version 1.0.
   *
   */

  /**
   * Classe para gerar e validar o Captcha.
   */
  class Core_Auth_Captcha{
    /*
     * Método gerador da imagem do captcha.
     */
    public function generateCaptcha() {
      $doc_root = $_SERVER['DOCUMENT_ROOT'];
      
      $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
      
      $captcha = new Zend_Captcha_Image();
      $captcha->setTimeout('900')
              ->setWordLen('6')
              ->setHeight('80')
              ->setFont($doc_root.$baseUrl . '/media/fonts/elephant.ttf') /* Fonte para as letras. Ex: ../font/arial.ttf */
              ->setImgDir($doc_root.$baseUrl . '/media/imagens/login/captcha/'); /* Diretório das imagens. Ex: ../imagens/ */
      
      $captcha->generate(); /* gerar a imagem */
      
      return $captcha->getId(); /* Retorna o id da Imagem */
    }
    
    /*
     * Método validador do captcha.
     */
    public function validateCaptcha($captcha, $idCaptcha){
      if(!empty($captcha)){
        $captchaId        = $idCaptcha; /* Id da imagem */
        $captchaInput     = $captcha; /* Dados que o usuario digitou. */
        $captchaSession   = new Zend_Session_Namespace('Zend_Form_Captcha_'.$captchaId);
        $captchaIterator  = $captchaSession->getIterator();
        $captchaWord      = $captchaIterator['word'];
        
        /*
         * Se o valor que o usuário digitou estiver correto, retorna True, se não retorna False.
         */
        if($captchaInput != $captchaWord){
          return false;
        } 
        else{
          return true;
        }
      }
    }
  }
?>
